<?php
	require_once(dirname(__FILE__)."/config/include.php");
			
	$time = date("Ymd H:i:s") ;
	
	$_PARA 	= array() ;
	if(array_key_exists('notify_type',$_POST))	$_PARA 		= $_POST ;
	else										$_PARA 		= $_GET ;
	ob_start();
	
	$msg = "" ;
	foreach ($_PARA as $k=>$tmp){
		$msg .= "$k = ".$_PARA[$k]."\r\n" ; 
	}
	file_put_contents(dirname(__FILE__)."/log_pay_zfb_vip.txt","$time -- $msg.\r\n",FILE_APPEND);
		
	sql_connect() ;
	
	if ($_PARA['trade_status'] == "WAIT_BUYER_PAY"){
		message_log_zfb("WAIT_BUYER_PAY : 交易预生成") ;
		
		$out_trade_no = $_PARA['out_trade_no'] ;		// 商户订单号	
		$trade_no = $_PARA['trade_no'] ;				// 支付宝订单号
				
		$save_tr_id = sql_fetch_one_cell("select `prepay_id` from `log_pay_vip` where `prepay_id` = '$out_trade_no'") ;
		if ($out_trade_no != $save_tr_id){
			// 非法订单,直接返回
			zfb_return("非法订单,没处理返回.") ;
		}
		$uid = intval(sql_fetch_one_cell("select `uid` from `log_pay_vip` where `trade_no` = '$out_trade_no'")) ;
		if ($uid <= 0){
			// 非法订单,直接返回
			zfb_return("非法订单,没处理返回.") ;
		}
		
		$total_fee = doubleval($_PARA['total_fee']) ;		// 交易金额
        if ($total_fee == 0)    $total_fee = doubleval($_PARA['total_amount']) ;
		$price 	=  doubleval($_PARA['price']) ;				// 商品单价		
        if ($price == 0)        $price = "实收金额 : " .  $_PARA['receipt_amount'] ;

		$newmemo = json_encode($_PARA,JSON_UNESCAPED_UNICODE);		
		sql_query("update log_pay_vip set `transaction_id` = '$trade_no' , `memo_xml` = '$newmemo' where `prepay_id` = '$out_trade_no'") ;	
		zfb_return("处理成功,成功预先创建交易日志") ;
	}
	
	if ($_PARA['trade_status'] == "TRADE_SUCCESS"){
		message_log_zfb("TRADE_SUCCESS : 交易成功") ;
		
		// 支付成功
		$out_trade_no = $_PARA['out_trade_no'] ;		// 商户订单号	
		$trade_no = $_PARA['trade_no'] ;				// 支付宝订单号
		
		$uid = intval(sql_fetch_one_cell("select `uid` from `log_pay_vip` where `trade_no` = '$out_trade_no'")) ;
		if ($uid <= 0){
			// 非法订单,直接返回
			zfb_return("非法订单,没处理返回.") ;
		}
		
		$total_fee = doubleval($_PARA['total_fee']) ;		// 交易金额
        if ($total_fee == 0)    $total_fee = doubleval($_PARA['total_amount']) ;
		$price 	=  doubleval($_PARA['price']) ;				// 商品单价			
        if ($price == 0)        $price = "实收金额 : " .  $_PARA['receipt_amount'] ;

		// 判定订单是否正确
		$log_pay = sql_fetch_one("select * from log_pay_vip where `trade_no` = '$out_trade_no'") ;
		if (!is_array($log_pay) || !array_key_exists("trade_no", $log_pay)){
			zfb_return("订单不存在." , false) ;
		}
		if ($out_trade_no != $log_pay['trade_no'])
		{
			zfb_return("订单号不正确" , false) ;
		}
		
		$buyer_id = trim($_PARA['buyer_id']);				// 买家支付宝用户号
		$r_data = "支付宝订单号:$trade_no , 总金额:$total_fee 元 , 单价:$price 元, 支付用户支付宝用户号:$buyer_id" ;
		$_PARA['MemoText'] = $r_data ;
		$newmemo = json_encode($_PARA,JSON_UNESCAPED_UNICODE);	//json_encode($_PARA) ;

		sql_query("update log_pay_vip set `state` = '1' , `memo_xml` = '$newmemo' where `prepay_id` = '$out_trade_no' and `state` = 0") ;
		$log_pay = sql_fetch_one("select * from log_pay_vip where `prepay_id` = '$out_trade_no' and `state` = 1") ;
		if (!is_array($log_pay) || !array_key_exists("trade_no", $log_pay)){
			zfb_return("订单已处理") ;
		}
				
		//$vip_level = $log_pay['user_type_class'] ;
		//lwx 新增 
	//	sql_query("update user_info set user_type= 3   where id = '$uid'") ;
		sql_query("update log_pay_vip set `state` = '2' , `state_count` = `state_count` + 1 , `endtime` = unix_timestamp() where `prepay_id` = '$out_trade_no'") ;
		//$uinfo = sql_fetch_one("select * from user_info where `id` = '$uid'") ;
		//lwx  新增
		/* $user_user_type=intval($uinfo['user_type']);
		$user_user_class=intval($uinfo['user_type_class']);
		$tmend = 365 * 24 * 60 * 60 ; // 1年
		$sql="select user_id from user_pay_vip where user_id='$uid'";
		$if_exit_payvip=intval(sql_fetch_one_cell($sql));
		//数据不存在 添加数据
		if($if_exit_payvip==0){
		    sql_query("INSERT INTO `user_pay_vip` (`user_id`, `user_type_class`, `start_time`, `end_time`) VALUES ('$uid', '$vip_level', unix_timestamp(), unix_timestamp() + $tmend )  on duplicate key update `start_time` = unix_timestamp() , `end_time` = unix_timestamp() + $tmend") ;
		}else{
		    if ($user_user_class == $vip_level){
		        // 续费
		        if (intval(sql_fetch_one_cell("select `user_type_class` from `user_pay_vip` where `user_id`= '$uid' and `user_type_class` = '$vip_level'")) == $vip_level){
		            // 存在
		            sql_query("update `user_pay_vip` set `end_time` = `end_time` + $tmend where `user_id`= '$uid' and `user_type_class` = '$vip_level'") ;
		        }
		    }
		    //user_user_class 1变成5   user_pay_vip start_time为当前时间
		    if($user_user_class==1&&$vip_level==5){
		        $nowtime=time();
		        $end_time=$nowtime+$tmend;
		        sql_query("update `user_pay_vip` set   `start_time` =  $nowtime ,  `end_time`= $end_time ,user_type_class='$vip_level' where `user_id`= '$uid' ") ;
		    }
		} 
		
		sql_query("update `user_info` set `user_type_class` = '$vip_level' where `id` = '$uid'") ;
        */
		//设计师审核通过
	/* 	$time=time();
		sql_query("update sys_user_designer set audit_state=1 , audit_uid=1,audit_time='$time' where uid= '$uid'");
	 */	// 付费设计师注册总送积分
     //   _vip_user_add_score($uid) ;
        //短信通知财务
        $vip_cw_tel_list=$GLOBALS['VIP_CW_TEL_LIST'];
        send_finance_vip_pay_SMS($uid , $total_fee,$vip_cw_tel_list) ;
		zfb_return("订单已处理 , 交易成功.") ;
	}
	if ($_PARA['trade_status'] == "TRADE_CLOSED")
	{
		message_log_zfb("TRADE_CLOSED : 交易关闭") ;
		
		// 交易关闭
		$out_trade_no = $_PARA['out_trade_no'] ;		// 商户订单号	
		$trade_no = $_PARA['trade_no'] ;				// 支付宝订单号

		$uid = intval(sql_fetch_one_cell("select `uid` from `log_pay_vip` where `trade_no` = '$out_trade_no'")) ;
		if ($uid <= 0){
			// 非法订单,直接返回
			zfb_return("非法订单,没处理返回.") ;
		}
		
		
		sql_query("update log_pay_vip set `state` = '99' where `prepay_id` = '$out_trade_no'") ;
		zfb_return("订单已处理 , 交易关闭成功(取消订单).") ;
	}
	
	zfb_return("其他类型回调通知,暂不处理......") ;
	
	
	function message_log_zfb($message)
	{
		$time = date("Ymd H:i:s") ;
		file_put_contents(dirname(__FILE__)."/log_pay_zfb_vip.txt","---------$time ----- $message.\r\n\r\n",FILE_APPEND);
	}
	
	function zfb_return($message , $rntzfb = true)
	{
		if ($rntzfb == true){
			ob_end_clean();
			$show = "success" ;
		    echo $show ;    
			ob_end_flush();
		}
		
		$time = date("Ymd H:i:s") ;
		file_put_contents(dirname(__FILE__)."/log_pay_zfb_vip.txt","$time -- $message.\r\n",FILE_APPEND);
		exit(0) ;
	}
	
?>